package prac;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 给定参数n，从1到n会有n个整数：1,2,3,…,n,这n个数字共有n!种排列。
 按大小顺序升序列出所有排列的情况，并一一标记，
 当n=3时,所有排列如下:
 “123”
 “132”
 “213”
 “231”
 “312”
 “321”
 给定n和k，返回第k个排列。
 输入描述
 输入两行，第一行为n，第二行为k，
 给定n的范围是[1,9],给定k的范围是[1,n!]。
 */
public class Ksort {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); // 创建Scanner对象以便读取输入
        int n=sc.nextInt();
        int k=sc.nextInt();
        List<Integer> num=new ArrayList<>();
        for(int i=1;i<=n;i++){
            num.add(i);
        }
        StringBuffer sb=new StringBuffer();
        for(int i=n;i>0;i--){
            int sum=factorial(i-1);
            int m=0;
            if(k!=0){
                m=k/sum;
                if(0==k%sum){
                    m--;
                }
            }
            int re=num.get(m);
            num.remove(m);
            if(m!=0){
                k=k-m*sum;
            }

            sb.append(re);
        }

        System.out.println(sb.toString());
    }

    public static int factorial(int n) {

        int result = 1;
        for (int i = 1; i <= n; i++) {
            result *= i;
        }
        return result;
    }

}

